package gui;

import javax.swing.JPanel;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.JScrollPane;

import Usager.Livreur;
import carnetCommandes.Commande;
import carnetCommandes.Registre;

import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Vector;

import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.border.TitledBorder;

import livraison.ControleurLivraison;

public class LivreurPanel extends JPanel {

	private Vector<Commande> commandes;
	private JButton btnVoirLivraisons;
	private JList listCommandes;
	private JList listLivraisons;
	private Registre registre;
	private GoogleMapPanel panelgoogle;
	private JLabel lblAdresse;
	private JLabel lblCodePostal;
	private JTextField textFieldAdresse;
	private JTextField textFieldCodePostal;
	private JLabel lblVille;
	private JTextField textFieldVille;
	private ControleurLivraison control;
	
	/**
	 * Create the panel.
	 */
	public LivreurPanel() {
		setLayout(null);
		registre = Registre.getInstance();
		
		panelgoogle = new GoogleMapPanel();
		panelgoogle.setVisible(true);

		control = ControleurLivraison.getInstance();

		
		//ajout par Laurence pour voir mieux la carte******************
		
		JScrollPane jscroll = new JScrollPane(panelgoogle); 
		jscroll.setVerticalScrollBarPolicy( 
		                 JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
		jscroll.setPreferredSize(new Dimension(300, 300)); 
		
		 //************************************************************
		
		
		control.getTrajetLivraison().addObserver(panelgoogle);
		
		btnVoirLivraisons = new JButton("Voir les livraisons");
		btnVoirLivraisons.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				control.setEmplacementLivreur(textFieldVille.getText(),textFieldAdresse.getText(),textFieldCodePostal.getText());
				
				try {
					refresh();
				} catch (Exception e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		btnVoirLivraisons.setBounds(245, 7, 136, 23);
		add(btnVoirLivraisons);
		
		listCommandes = new JList();
		listCommandes.setBorder(new TitledBorder(null, "Commandes \u00E0 livrer", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		listCommandes.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent arg0) {
			
					control.creerTrajet(listCommandes.getSelectedIndex());

			}
		});
		listCommandes.setBounds(10, 140, 164, 177);
		add(listCommandes);
		//listCommandes.setListData(registre.getCarnet());
		
		listLivraisons = new JList();
		listLivraisons.setBorder(new TitledBorder(null, "Mes commandes", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		listLivraisons.setBounds(368, 140, 138, 177);
		add(listLivraisons);
		
		
		
        //modif par Laurence**********************
		add(jscroll);
		jscroll.setBounds(516, 17, 300, 300);
		//****************************************
		
		
		lblAdresse = new JLabel("Adresse");
		lblAdresse.setBounds(10, 11, 65, 14);
		add(lblAdresse);
		
		lblCodePostal = new JLabel("Code Postal");
		lblCodePostal.setBounds(10, 67, 65, 14);
		add(lblCodePostal);
		
		textFieldAdresse = new JTextField();
		textFieldAdresse.setBounds(92, 8, 120, 20);
		add(textFieldAdresse);
		textFieldAdresse.setColumns(10);
		
		textFieldCodePostal = new JTextField();
		textFieldCodePostal.setBounds(92, 64, 120, 20);
		add(textFieldCodePostal);
		textFieldCodePostal.setColumns(10);
		
		lblVille = new JLabel("Ville");
		lblVille.setBounds(10, 39, 46, 14);
		add(lblVille);
		
		textFieldVille = new JTextField();
		textFieldVille.setBounds(92, 36, 120, 20);
		add(textFieldVille);
		textFieldVille.setColumns(10);
		
		JButton btnAccepterCommande = new JButton("Accepter Commande");
		btnAccepterCommande.setBounds(184, 153, 174, 23);
		btnAccepterCommande.addActionListener(new AccepterListener());
		add(btnAccepterCommande);
		
	}
	
	class AccepterListener implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent arg0) {
			Commande commande;
			if (!listCommandes.isSelectionEmpty())
			try {
				commande = registre.getListeCommandeConfirmee().get(listCommandes.getSelectedIndex());
				
				control.creerLivraison((Commande) listCommandes.getSelectedValue());
				
				
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				refresh();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
		}
		
	}
	public void refresh() throws Exception{
		listCommandes.setListData(registre.getListeCommandeConfirmee());
		listLivraisons.setListData(control.getCarnetLivreur());
	}
}
